package bancosys.tec.rtm.monitor;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Marcio Ribeiro (mmr)
 * @created Sep 7, 2006
 */
public class RulesCase {
    private List<Rule> rules = new ArrayList<Rule>();

    private List<String> actions = new ArrayList<String>();

    private boolean logicalOperatorAnd = true;

    /**
     * Construtor.
     * 
     * @param logicalOperatorAnd <code>true</code> se operador logico entre regras deve ser AND (E), <code>false</code> se deve ser OR (OU).
     */
    public RulesCase(boolean logicalOperatorAnd) {
        this.logicalOperatorAnd = logicalOperatorAnd;
    }

    /**
     * Construtor.
     */
    public RulesCase() {
        this(true);
    }

    /**
     * @return lista de chaves de actions a serem executadas caso regras sejam satisfeitas.
     */
    public List<String> getActions() {
        return this.actions;
    }

    /**
     * @return lista de regras.
     */
    public List<Rule> getRules() {
        return this.rules;
    }

    /**
     * Adiciona uma regra a lista de regras.
     * 
     * @param rule regra a adicionar.
     */
    public void addRule(Rule rule) {
        this.rules.add(rule);
    }

    /**
     * Adiciona uma action a lista de actions.
     * 
     * @param actionKey chave da action a adicionar.
     */
    public void addAction(String actionKey) {
        this.actions.add(actionKey);
    }

    /**
     * @return <code>true</code> se o operador logico a ser usado entre regras eh AND (E), <code>false</code> se for OR (OU).
     */
    public boolean isLogicalOperatorAnd() {
        return this.logicalOperatorAnd;
    }
}